package LearnJava.Throwable.ExtendExce;

/*
    子父类的异常：
        - 如果父类抛出多个异常，子类重写父类的方法时，抛出和父类相同的异常或者是父类异常的子类
        或者不抛出异常。
        - 父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常，此时子类产生该异常，只能
        捕获处理，不能声明抛出
    注意：
        父类异常是什么样，子类异常就什么样
 */

public class Fu {
    public void show1() throws NullPointerException, ClassCastException {
    }

    public void show2() throws IndexOutOfBoundsException {
    }

    public void show3() throws IndexOutOfBoundsException {
    }

    public void show4(){
    }
}
    class Zi extends Fu{
        @Override
        //子类重写父类方法时，抛出和父类相同的异常
        public void show1() throws NullPointerException,ClassCastException{}

        //子类重写父类方法时，抛出父类异常的子类
        @Override
        public void show2() throws ArrayIndexOutOfBoundsException{}

        //子类重写父类方法时，不抛出异常
        @Override
        public void show3(){}

        //父类方法没有抛出异常，子类重写父类方法就不能抛出异常
        //此时只能捕获处理，不能声明抛出
        @Override
        public void show4(){
            try {
                throw new Exception("异常");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

